home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Surfer: Getting Started
/
Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin
/
pc
/
mac
/
bonus
/
peter_le
/
finger-1
/
my_units
/
myaddres.uni
next >
Wrap
Text File
|
1992-02-24
|
4KB
|
217 lines
unit MyAddressInput;
{ This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
{ Copyright 1991-1992 Peter N Lewis }
{ If you use this code, you must give me credit in your about box and documentation }
{ This is part of my generic library of routines }
interface
uses
OOMainLoop;
const
ai_ok = 1;
ai_cancel = 2;
ai_setdefault = 3;
ai_user = 4;
ai_machine = 5;
ai_user_item = 6;
var
default_user, default_machine: str255;
type
AIObject = object(DTObject)
okon, setdefon: boolean;
procedure Create (id: integer);
override;
procedure DoItem (item: integer);
override;
procedure DoKey (modifiers: integer; ch: char; code: integer);
override;
procedure DoEditMenu (item: integer);
override;
procedure SetOK;
procedure GetDialog;
procedure SetDialog;
procedure PackStringBlank (var s: str255);
procedure PackString (var s: str255);
procedure UnPackString (s: str255);
function IsOKOn: boolean;
function IsSetDefaultOn: boolean;
procedure DoCommand (s: str255);
end;
procedure InitAddressInput;
implementation
uses
BaseGlobals, AppGlobals, MyTypes, MyUtils, MyTEUtils, MyPreferences;
var
first: boolean;
procedure InitAddressInput;
begin
first := true;
end;
procedure MyOutlineDefault (dp: dialogPtr; item: integer);
var
kind: integer;
h: handle;
r: rect;
fi: AIObject;
begin
fi := AIObject(GetWObject(dp));
GetDItem(dp, fi.ok_item, kind, h, r);
PenSize(3, 3);
InsetRect(r, -4, -4);
if not ControlEnabled(dp, fi.ok_item) then begin
PenPat(gray);
FrameRoundRect(r, 16, 16);
PenPat(black);
end
else
FrameRoundRect(r, 16, 16);
end;
procedure AIObject.SetOK;
var
nsetdefon: boolean;
begin
if okon <> IsOKOn then begin
okon := not okon;
HiliteItem(window, ai_ok, okon);
SetPort(window);
MyOutlineDefault(window, ai_user_item);
end;
if setdefon <> IsSetDefaultOn then begin
setdefon := not setdefon;
HiliteItem(window, ai_setdefault, setdefon);
end;
end;
procedure AIObject.SetDialog;
begin
SetItemText(window, ai_user, default_user);
SelIText(window, ai_user, 0, maxInt);
SetItemText(window, ai_machine, default_machine);
end;
procedure AIObject.GetDialog;
begin
GetItemText(window, ai_user, default_user);
GetItemText(window, ai_machine, default_machine);
end;
procedure SetDefaultString (s: str255);
begin
SetPrefsResource('STR ', defaultStrResID, handle(NewString(s)));
end;
procedure GetDefaultString (var s: str255);
var
h: handle;
rn: integer;
begin
rn := GetPrefsResource('STR ', defaultStrResID, h);
s := stringHandle(h)^^;
if rn <> -1 then
CloseResFile(rn);
end;
procedure AIObject.Create (id: integer);
var
kind: integer;
h: handle;
r: rect;
s: str255;
begin
inherited Create(id);
okon := true;
setdefon := true;
ok_item := ai_ok;
cancel_item := ai_cancel;
GetDItem(window, ai_ok, kind, h, r);
InsetRect(r, -10, -10);
SetDItem(window, ai_user_item, userItem, handle(@MyOutlineDefault), r);
if first then begin
first := false;
GetDefaultString(s);
UnpackString(s);
end;
SetDialog;
SetOK;
end;
procedure AIObject.DoItem (item: integer);
var
s: str255;
begin
case item of
ai_cancel, ai_ok, ai_setdefault: begin
if item <> ai_cancel then begin
GetDialog;
if item = ai_setdefault then begin
PackStringBlank(s);
SetDefaultString(s);
PackString(s);
if s = '?' then begin
Destroy;
ShowCursor;
exit(DoItem);
end;
end
else
PackString(s);
DoCommand(s);
end;
Destroy;
ShowCursor;
end;
otherwise
;
end;
end;
procedure AIObject.DoKey (modifiers: integer; ch: char; code: integer);
begin
SetOK;
end;
procedure AIObject.DoEditMenu (item: integer);
var
modified: boolean;
begin
inherited DoEditMenu(item);
SetOK;
end;
procedure AIObject.PackStringBlank (var s: str255);
begin
end;
procedure AIObject.PackString (var s: str255);
begin
end;
procedure AIObject.UnPackString (s: str255);
begin
end;
function AIObject.IsOKOn: boolean;
begin
end;
function AIObject.IsSetDefaultOn: boolean;
begin
end;
procedure AIObject.DoCommand (s: str255);
begin
end;
end.